#include "0-utils.hpp"

#include <vector>

class AdjEdge
{
  public:
    AdjEdge(int id, EdgeType val) : ver_id(id), weight(val), next_arc(nullptr) {}
    ~AdjEdge() = default;

  public:
    int ver_id;
    EdgeType weight;
    AdjEdge* next_arc;
};

class AdjVer
{
  public:
    AdjVer(VerType val, AdjEdge* edge) : vex(val), first_arc(edge) {}
    ~AdjVer() = default;

    void visit() { visitVer(vex); }

  public:
    VerType vex;
    AdjEdge* first_arc;
};

class GraphByAdjTable
{
  public:
    GraphByAdjTable() = default;
    ~GraphByAdjTable() = default;

  public:
    std::vector<AdjVer> adj_table;
};

